﻿// AbstractMenuControl.cs
//

using System;
using System.Collections.Generic;

namespace OcenyOpisowe.Client.Controls
{
	/// <summary>
	/// Bazowa kontrolka menu.
	/// Zawiera bazowe funkcjonalności dostępne dla wszystkich kontrolek menu.
	/// </summary>
	public abstract class AbstractMenuControl : AbstractControl
	{
		#region Prywatne zmienne klasy
		/// <summary>
		/// Kolekcja elementów menu dodanych do tej kontrolki.
		/// </summary>
		private List<MenuItemControl> _menuItems;
		#endregion

		#region Publiczne właściwości klasy
		/// <summary>
		/// Kolekcja elementów menu, dodanych jako podelementy.
		/// </summary>
		public IEnumerable<MenuItemControl> MenuItems
		{
			get { return _menuItems; }
		}
		#endregion

		#region Konstruktor klasy
		/// <summary>
		/// Inicjuje instancję kontrolki menu.
		/// </summary>
		protected AbstractMenuControl()
		{
			_menuItems = new List<MenuItemControl>();
		}
		#endregion

		#region Metoda AddMenuItem
		/// <summary>
		/// Dodaje nowy element menu do tego elementu..
		/// </summary>
		/// <param name="item">Element menu do dodania.</param>
		public virtual void AddMenuItem(MenuItemControl item)
		{
			_menuItems.Add(item);
		}
		#endregion

		#region Metoda ClearMenuItems
		/// <summary>
		/// Metoda czyszcząca kolekcję wszystkich elementów menu.
		/// </summary>
		public virtual void ClearMenuItems()
		{
			_menuItems.Clear();
		}
		#endregion

		#region Metoda RemoveMenuItem
		/// <summary>
		/// Usuwa element z kolekcji elementów menu.
		/// </summary>
		/// <param name="item">Element do usunięcia.</param>
		public virtual void RemoveMenuItem(MenuItemControl item)
		{
			_menuItems.Remove(item);
		}
		#endregion
	}
}
